package com.example.coreshopapp.utils;

import android.content.Context;
import android.provider.Settings;

//public class DeviceInfo {

//    public static String getDevicePseudoSerial(Context context) {
//        try {
//            return Settings.Secure.getString(
//                    context.getContentResolver(),
//                    Settings.Secure.ANDROID_ID
//            );
//        } catch (Exception e) {
//            e.printStackTrace();
//            return null;
//        }
//    }

import android.content.Context;
import android.os.Build;
import android.Manifest;

import androidx.core.content.ContextCompat;

import android.content.pm.PackageManager;

import java.nio.charset.StandardCharsets;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import android.provider.Settings;

public class DeviceInfo {
    // 获取设备sn
    public static String getDeviceSerial(Context context) {
        try {
// 简易版第一种方法 return Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
// 第二种方法，安卓10以上不适用 if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.O) {
//                if (ContextCompat.checkSelfPermission(context, Manifest.permission.READ_PHONE_STATE)
//                        == PackageManager.PERMISSION_GRANTED) {
//                    return Build.getSerial();
//                } else {
//                    return "Permission Denied";
//                }
//            } else {
//                return Build.SERIAL;
//            }
            String androidId = Settings.Secure.getString(context.getContentResolver(), Settings.Secure.ANDROID_ID);
        // Android_ID 在某些设备上可能为 "9774d56d682e549c"（早期 bug），避免使用这个
        if (androidId != null && !"9774d56d682e549c".equals(androidId)) {
            return androidId;
        }
        // 如果获取不到 ANDROID_ID 或不可靠，可以 fallback 使用其他方式
        // 拼接设备信息进行加密生成唯一 ID（非真实 SN，仅用于识别）
        String fallbackId = Build.BOARD + Build.BRAND + Build.DEVICE + Build.HOST + Build.ID + Build.MODEL + Build.PRODUCT + Build.TYPE;
        return hashString(fallbackId);

        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    // 使用 SHA-1 哈希简化字符串
    private static String hashString(String input) {
        try {
            MessageDigest digest = MessageDigest.getInstance("SHA-1");
            byte[] result = digest.digest(input.getBytes(StandardCharsets.UTF_8));
            StringBuilder sb = new StringBuilder();
            for (byte b : result) {
                sb.append(String.format("%02x", b));
            }
            return sb.toString();
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            return null;
        }
}
}
